const path = require('path')
const fs = require('fs')
const { app, BrowserWindow, dialog, ipcMain, ipcRenderer, MessageChannelMain } = require('electron')

const { port1 } = new MessageChannelMain()
const { setTransform } = require(__dirname + '/src/utils/common.js')

// 保持一个对于 window 对象的全局引用，不然，当 JavaScript 被 GC，
// window 会被自动地关闭
var mainWindow = null;

// 当所有窗口被关闭了，退出。
app.on('window-all-closed', function() {
  // 在 OS X 上，通常用户在明确地按下 Cmd + Q 之前
  // 应用会保持活动状态
  if (process.platform != 'darwin') {
    app.quit();
  }
});

// 当 Electron 完成了初始化并且准备创建浏览器窗口的时候
// 这个方法就被调用
app.on('ready', function() {
  // 创建浏览器窗口。
  mainWindow = new BrowserWindow({
    width: 1200, 
    height: 600,
    webPreferences: {
        // 开启node
        nodeIntegration: true,
        contextIsolation: true,
        preload: (__dirname + '/src/utils/preload.js')
    },
    
  });

  // 加载应用的 index.html
  mainWindow.loadFile('index.html')
  // mainWindow.loadURL('file://' +  + '/index.html');

  // 打开开发工具
  mainWindow.openDevTools();

  // 当 window 被关闭，这个事件会被触发
  mainWindow.on('closed', function() {
    // 取消引用 window 对象，如果你的应用支持多窗口的话，
    // 通常会把多个 window 对象存放在一个数组里面，
    // 但这次不是。
    mainWindow = null;
  });


  // 监听注册的事件
  ipcMain.handle('open-mode:open', async(e, target) => {
    // console.log("open file", target)
    const res = dialog.showOpenDialogSync({
      title:'打开geojson文件'
    })

    // 获取文件路径
    const fileUrl = res[0];
    // 获取文件文件夹路劲
    const fileGroupUrl = fileUrl.substring(0, fileUrl.lastIndexOf("\\") + 1);
    // 获取文件名
    const fileName = fileUrl.substring(fileUrl.lastIndexOf("\\") + 1, fileUrl.length + 1)

    // 文件操作
    let geojson = fs.readFileSync(res[0], 'utf-8');
    // console.log("open file", res)
    const resultJson = await setTransform({
      transform:target,
      geojson:geojson,
    })

    let resultJsonString = ""

    if(typeof resultJson == 'object'){
      resultJsonString = JSON.stringify(resultJson)
    }

    // 转换坐标系后保存新文件
    // console.log(resultJsonString)
    fs.writeFile(fileGroupUrl + fileName + '1', resultJsonString, 'utf-8', (err) => {
      if(!err){
        e.sender.send('message-reply', '转换完成, 到文件目录下查看文件!')
        console.log('write is ok!')
      }
    })
  })

  
});